/**
 *====================================================
 * 文件名称: FinanceApplicationService.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年09月23日	chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.service;

import java.util.Date;
import java.util.List;
import java.util.Set;

import com.yuexunit.finance.project.entity.FinanceApplicationEntity;
import com.yuexunit.finance.project.entity.lexicon.FinanceStateEnum;
import com.yuexunit.finance.project.entity.lexicon.ProductTypeEnum;
import com.yuexunit.finance.support.FinanceInquireParams;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;

/**
 * @ClassName: FinanceApplicationService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年09月23日 18:56:17
 */
public interface FinanceApplicationService {

	/** 创建融资申请 */
	public Long createFinanceApplication(FinanceApplicationEntity financeEntity);

	/** 修改融资申请 */
	public void updateFinanceApplication(FinanceApplicationEntity financeEntity);

	/** 更新融资申请 */
	public void renovateFinanceApplication(FinanceApplicationEntity financeEntity);
	
	/** 删除融资申请 */
	public void deleteFinanceApplication(Long financeId);

	/** 获取融资申请 */
	public FinanceApplicationEntity inquireFinanceApplicationEntity(Long financeId);
	
	/** 获取融资申请 */
	public FinanceApplicationEntity inquireFinanceApplicationEntity(String financeNumber);
	
	/** 获取融资申请 */
	public List<Long> inquireRecieveNoticeInventoryEntity(Long recieveNoticeId);

	public List<Long> inquireTallyingEntity(Long recieveNoticeId);
	
	public List<Long> inquireContainerBulkstockHistoryEntity(Long noticeInventoryId);
	
	public List<Long> inquireContainerInventoryHistoryEntity(Long recieveNoticeId);
	
	public PageList<FinanceApplicationEntity> inquireFinanceList(FinanceInquireParams params);
	
	public List<Long> getFinanceListIds(Integer productType);
	
	public List<Long> getFinanceListIds3(Integer productType,String financeNumber);
	
	public List<Long> getFinanceListIds2(Integer productType,String enterpriseName);
	
	/** 待融资审批数 */
	public List<Long> countWaitAuditFinanceApplication();
	
	/** 待融资审批数 */
	public List<Long> countWaitAuditFinanceApplication1();

	/** 待合同签订数 */
	public List<Long> countWaitContractFinanceApplication();
	
	/** 待合同签订数 1*/
	public List<Long> countWaitContractFinanceApplication1();
	
	/** 待增补合同数 */
	public List<Long> countWaitSupplementContractFinanceApplication();

	/** 通知监管&通知收货 */
	public List<Long> countWaitRecieveFinanceApplication();

	/** 放款确认数 */
	public List<Long> countWaitLoadFinanceApplication();

	/** 运输通知数 */
	public List<Long> countWaitTransportFinanceApplication(List<Long> financeIds);

	/** 不良资产数 */
	public List<Long> countWaitBadassetsFinanceApplication();
	
	public FinanceApplicationEntity inquireEnterpriseFinance(Long enterpriseId);
	
	public List<Long> countEnterprise(Long[] enterpriseId, Integer tradeType);

	/** 查询企业进行中的融资信息 */
	public PageList<FinanceApplicationEntity> inquireInProcessFinanceApplicationPageList(Long[] financeIds,  Long enterpriseId, Long enterpriseId1, Set<FinanceStateEnum> financeStates, PageCriteria page);
	
	public PageList<FinanceApplicationEntity> inquireInProcessFinanceApplicationPageLists(Long[] financeIds,Long[] financeContractIds,String financeNumber, Long enterpriseId, Long enterpriseId1, Set<FinanceStateEnum> financeStates, PageCriteria page);
	
	/** 查询企业进行中的融资信息 */
	public List<FinanceApplicationEntity> inquireInProcessFinanceApplicationList(Long enterpriseId, Set<FinanceStateEnum> financeStates);
	
	/** 查询融资信息 */
	public List<FinanceApplicationEntity> inquireFinanceList(Long enterpriseId, Set<FinanceStateEnum> financeStates);

	/** 查询台账资金融资项目 */
	public PageList<FinanceApplicationEntity> inquireFinancePageList(String financeNumber, String enterpriseName, Date startDate, Date endDate, PageCriteria page);
	
	/** 查询台账资金融资项目 */
	public List<FinanceApplicationEntity> inquireFinanceList(String financeNumber, String enterpriseName, Date startDate, Date endDate, PageCriteria page);

	public List<Date> inquireWarningTime(Long[] financeIds, String colName);

	/** 根据产品类型查询 */
	public List<Long> inquireFinanceIdByProductType(Set<ProductTypeEnum> productType);
	
	/** 未结清融资 */
	public List<Long> countOutstandingFinanceApplication();
}
